부동소수점 장치
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
부동소수점 장치(FPU)는 부동 소수점 연산을 수행하도록 설계된 하드웨어 장치이다. 1954년 IBM 704에서 처음으로 표준 기능으로 도입되었으며, 이후 여러 시스템에서 보조 프로세서 또는 통합 장치 형태로 구현되었다. FPU는 덧셈, 뺄셈, 곱셈과 같은 기본적인 연산 외에도 복잡한 연산을 지원하며, 현대 컴퓨터 아키텍처에서 정수 연산과 분리되어 사용된다. FPU는 I/O 프로세서, 코프로세서, CPU 대체 방식과 같은 다양한 연결 형식을 가지며, 성능 향상을 위해 명령어 파이프라인 처리 및 SIMD 장치와 결합되기도 한다.
더 읽어볼만한 페이지
- 부동소수점 - IEEE 754
IEEE 754는 부동소수점 숫자를 표현하고 처리하기 위한 국제 표준으로, 다양한 형식과 연산, 반올림 규칙, 예외 처리 등을 정의한다. - 부동소수점 - IEEE 754-1985
IEEE 754-1985는 부동소수점 수의 표현, 연산, 반올림 등을 정의하는 기술 표준으로, 부호 비트, 지수, 가수를 사용하여 숫자를 표현하며, 단정밀도, 배정밀도, 확장 정밀도 형식을 제공하고, 0, 무한대, NaN과 같은 특수한 값을 정의하며, 표준 연산과 다양한 함수 및 술어를 제공한다. - 코프로세서 - 제온 파이
제온 파이는 인텔에서 개발한 x86 기반 메니코어 프로세서로, 나이츠 페리, 나이츠 코너, 나이츠 랜딩, 나이츠 밀 등의 모델이 있으며, AVX-512 명령어 세트 지원을 통해 고성능 컴퓨팅 환경에서 복잡한 연산을 효율적으로 처리하는 데 중점을 둔다. - 코프로세서 - 엔비디아 테슬라
엔비디아 테슬라는 엔비디아가 개발한 고성능 GPU 제품군으로, CUDA를 활용한 병렬 컴퓨팅 환경을 제공하여 다양한 분야에서 고성능 컴퓨팅을 지원하며, 여러 마이크로아키텍처 기반 모델을 통해 발전해왔고, 메모리 및 통신 대역폭을 늘리는 혁신을 거듭해왔다. - 중앙 처리 장치 - 마이크로컨트롤러
마이크로컨트롤러는 프로세서, 메모리, 입출력 기능을 단일 칩에 통합하여 임베디드 시스템의 핵심이 되는 부품으로, 프로그램 내장 방식을 통해 소프트웨어만으로 제어 기능 변경이 가능하며, 현재는 32비트 ARM, MIPS 아키텍처 기반 제품이 주를 이루고, 저전력 소모, 소형화, 다양한 기능 통합을 특징으로 다양한 분야에서 활용된다. - 중앙 처리 장치 - NX 비트
NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다.
부동소수점 장치 | |
---|---|
기본 정보 | |
![]() | |
유형 | 하드웨어 |
하위 클래스 | 마이크로프로세서 컴퓨터 하드웨어 |
다른 이름 | 수학 보조 프로세서 숫자 데이터 프로세서 코프로세서 부동소수점 유닛 |
기능 및 용도 | |
주요 기능 | 부동소수점 연산 실행 정수 연산 실행 초월 함수 계산 (일부 FPU) |
활용 분야 | 과학 계산 공학 시뮬레이션 그래픽 처리 인공지능 |
역사 | |
초기 형태 | 메인 CPU와 분리된 칩 형태 예: 인텔 8087 (x86 시스템용) |
현대 형태 | CPU에 통합된 형태 예: 인텔 i486 DX 이상, 모토로라 68040 이상 |
주요 제조사 | |
제조사 | 인텔 AMD ARM |
성능 및 정확도 | |
정확도 문제 | 부동소수점 연산의 반올림 오차 및 그로 인한 오류 가능성 존재 |
IEEE 754 표준 | 부동소수점 연산 표준 준수 |
오류 사례 | 인텔의 FSIN 명령어 오류 (정확도 문제) 펜티엄 FDIV 버그 |
추가 정보 | |
참고 자료 | 부동소수점 연산 관련 서적 및 자료 |
관련 용어 | CPU GPU 수치 해석 반올림 오차 |
2. 역사
1954년, IBM 704는 부동 소수점 연산을 표준 기능으로 갖추었는데, 이는 이전 모델인 IBM 701에 비해 크게 개선된 점이었다. 이 기능은 709, 7090, 7094와 같은 후속 모델에도 이어졌다.
CPU가 하드웨어에서 직접 지원하지 않는 부동 소수점 연산을 호출하는 프로그램을 실행할 때, CPU는 더 간단한 부동 소수점 연산을 사용하거나 에뮬레이트한다. 부동 소수점 연산을 에뮬레이션하기 위해 필요한 일련의 연산을 나열하는 소프트웨어는 종종 부동 소수점 라이브러리로 패키지된다.[5] 부동 소수점 하드웨어가 없는 시스템에서 CPU는 정수 산술 논리 장치에서 실행되는 일련의 더 간단한 고정 소수점 산술 연산을 사용하여 이를 에뮬레이트한다.
대부분의 현대 컴퓨터 아키텍처에서는 부동 소수점 연산과 정수 연산이 어느 정도 분리되어 있다. 이러한 분리는 아키텍처에 따라 크게 다르며, 일부는 전용 부동 소수점 레지스터를 가지고 있고, 인텔 x86과 같은 일부는 독립적인 컴퓨터 클럭 체계를 사용하기도 한다.[7]
1980년대에는 FPU가 CPU와 완전히 분리되어 옵션 추가 기능으로 판매되는 것이 IBM PC/호환 마이크로 컴퓨터에서 흔했다. 수학 집약적인 프로그램의 속도를 높이거나 활성화해야 할 경우에만 구입했다.
FPU는 다양한 방식으로 시스템에 연결될 수 있다. 크게 I/O 프로세서 형식, 코프로세서 방식, CPU 대체 방식이 있다.
1963년, 디지털은 부동 소수점을 표준 기능으로 탑재한 PDP-6를 발표했다.[5]
같은 해, GE-235는 부동 소수점 및 배정밀도 계산을 위한 "보조 산술 장치"를 갖추었다.[6]
역사적으로 일부 시스템은 통합 장치 대신 보조 프로세서를 사용하여 부동 소수점 연산을 구현했다. (하지만 현재는 CPU 외에도, 예를 들어 CPU에 항상 내장되어 있지 않은 보조 프로세서인 GPU는 일반적으로 FPU를 가지고 있으며, 초기 세대의 GPU는 그렇지 않았다.) 이는 단일 집적 회로, 전체 회로 기판 또는 캐비닛 형태일 수 있다. 부동 소수점 계산 하드웨어가 제공되지 않는 경우, 부동 소수점 계산은 소프트웨어로 수행되는데, 이는 더 많은 프로세서 시간을 소요하지만 추가 하드웨어 비용을 절감한다. 특정 컴퓨터 아키텍처의 경우, 부동 소수점 장치 명령은 소프트웨어 함수 라이브러리에 의해 에뮬레이션될 수 있으며, 이를 통해 동일한 오브젝트 코드가 부동 소수점 하드웨어가 있거나 없는 시스템에서 실행될 수 있다. 에뮬레이션은 CPU의 마이크로코드, 운영 체제 기능 또는 사용자 공간 코드와 같은 여러 수준에서 구현될 수 있다. 정수 기능만 사용할 수 있는 경우, CORDIC 방법이 초월 함수 평가에 가장 일반적으로 사용된다.
대부분의 현대 컴퓨터 아키텍처에서는 부동 소수점 연산과 정수 연산이 어느 정도 분리되어 있다. 이러한 분리는 아키텍처에 따라 크게 다르며, 일부는 전용 부동 소수점 레지스터를 가지고 있으며, 인텔 x86과 같은 일부는 독립적인 컴퓨터 클럭 체계까지 사용한다.[7]
CORDIC 루틴은 인텔 x87 보조 프로세서(8087,[8][9][10][11][12] 80287,[12][13] 80387[12][13])에서 80486[8] 마이크로프로세서 시리즈까지 구현되었으며, 모토로라 68881[8][9] 및 68882에서도 일부 종류의 부동 소수점 명령에 대해 주로 FPU 하위 시스템의 논리 게이트 수를 줄이기 위한 방법으로 구현되었다.
부동 소수점 연산은 종종 파이프라인 처리된다. 일반적인 아웃오브오더 실행이 없는 초기 슈퍼스칼라 아키텍처에서 부동 소수점 연산은 때때로 정수 연산과 별도로 파이프라인 처리되었다.
불도저 마이크로아키텍처의 모듈식 아키텍처는 동시 멀티스레딩을 사용하는 FlexFPU라는 특수 FPU를 사용한다. 각 물리적 정수 코어는 모듈당 두 개이며, 단일 스레드 방식인데, 이는 단일 물리적 코어의 자원을 공유하는 두 개의 가상 동시 스레드를 사용하는 인텔의 하이퍼스레딩과는 대조적이다.[14][15]
3. 부동 소수점 라이브러리
4. 통합 FPU
FPU는 특화되어 단순한 부동 소수점 연산(주로 덧셈과 곱셈)과 나눗셈과 같은 더 복잡한 연산으로 나뉠 수 있다. 어떤 경우에는 단순한 연산만 하드웨어나 마이크로코드로 구현되고, 더 복잡한 연산은 소프트웨어로 구현될 수 있다.
현재 아키텍처 중 일부에서는 FPU 기능이 SIMD 장치와 결합되어 SIMD 연산을 수행하기도 한다. 이에 대한 예로는 최신 인텔 및 AMD 프로세서에서 사용되는 x86-64 아키텍처에서 x87 명령어 세트에 SSE 명령어 세트가 추가된 것을 들 수 있다.
5. 추가형 FPU
IBM PC, XT 및 8088 또는 8086 기반의 대부분의 호환 기종에는 옵션인 8087 보조 프로세서를 위한 소켓이 있었다.[8][9][10][11][12] AT 및 80286 기반 시스템은 일반적으로 80287을 위한 소켓이 있었고,[12][13] 80386/80386SX 기반 시스템은 80387 및 80387SX를 위해 각각 소켓이 있었지만, 80387이 아직 존재하지 않았기 때문에 초기에는 80287을 위한 소켓이 있었다.[12][13] Cyrix 및 Weitek 등 다른 회사에서도 인텔 x86 시리즈용 보조 프로세서를 제조했다. Acorn Computers는 ARM 기반 Archimedes 제품군에 단정밀도, 배정밀도 및 확장 정밀도[21]를 제공하기 위해 WE32206을 선택하여 ARM2 프로세서와 WE32206을 인터페이스하여 추가 ARM 부동 소수점 명령어를 지원했다.[22]
PDP-11/45,[16] PDP-11/34a,[17] PDP-11/44,[17] 및 PDP-11/70[17]과 같은 여러 PDP-11 모델은 부동 소수점 명령어를 지원하기 위해 추가형 부동 소수점 장치를 지원했다. PDP-11/60,[17] MicroPDP-11/23[18] 및 여러 VAX 모델[19][20]은 추가형 FPU 없이 부동 소수점 명령어를 실행할 수 있었고(MicroPDP-11/23은 추가형 마이크로코드 옵션이 필요했음),[18] 이러한 명령어의 실행 속도를 더욱 높이기 위해 추가형 가속기를 제공했다.
Motorola 68000 제품군용 보조 프로세서로 68881 및 68882도 있었다.[8][9] 이는 Sun-3 시리즈와 같은 Motorola 68020/68030 기반 워크스테이션에서 흔했다. 또한 Apple Macintosh 및 Commodore Amiga 시리즈의 고급 모델에도 일반적으로 추가되었지만, IBM PC 호환 시스템과 달리 보조 프로세서 추가를 위한 소켓은 저가형 시스템에서는 흔하지 않았다.
부동 소수점 산술 기능을 제공하기 위한 마이크로컨트롤러 유닛(MCU/μC)/싱글 보드 컴퓨터 (SBC)용 추가형 FPU 보조 프로세서 장치도 있다. 이러한 추가형 FPU는 호스트 프로세서에 종속되지 않고 자체 프로그래밍 요구 사항(연산, 명령어 집합 등)을 가지며 종종 자체 통합 개발 환경 (IDE)과 함께 제공된다.
6. FPU 연결 형식
6. 1. I/O 프로세서 형식
FPU를 I/O 포트에 연결하여 일반적인 주변 기기와 마찬가지로 I/O 포트를 통해 데이터를 주고받는 방식이다. Am9511은 이 형식으로 설계되었다. FPU는 주변 기기로 취급되므로 CPU와 같은 제조사의 FPU를 사용하지 않아도 된다. 8비트 CPU 시대에는 비용이 많이 드는 Am9511 대신 다른 제조사의 계산기용 CPU를 I/O 포트에 연결하여 사용하는 실험이 취미가들 사이에서 이루어졌다.
모토로라의 MC68881(MC68020/MC68030용 FPU) 또는 인텔의 287(286용 FPU)를 MC68000 또는 MC68010에 연결하는 경우처럼, 대응 기종으로 설계되지 않은 조합에서는 데이터 입출력을 프로그램 상에서 명시적으로 수행해야 한다. 해당 머신에 대응하는 수치 연산 라이브러리를 사용하면, 애플리케이션 소프트웨어 프로그래밍에서 FPU를 사용하는 것을 의식할 필요는 없지만, I/O 포트를 통해 데이터를 주고받기 때문에 직접 연결된 경우에 비해 큰 오버헤드가 발생한다. 반대로 주 프로세서와 부 프로세서의 동작 속도를 개별적으로 설정할 수 있는 등 자유도가 높다는 장점이 있다.
2018년 현재, 그래픽 처리 장치 및 이를 기반으로 한 프로세서를 사용하여 암호 화폐 및 각종 연산 처리에 사용되는 경우가 늘어나, 그래픽 카드 품귀 현상이 일어날 정도의 수요가 발생하고 있다.
6. 2. 코프로세서 방식
CPU와 FPU가 주소 버스와 데이터 버스를 공유하며 협조하여 동작하는 방식이다. 사용자가 보기에는 CPU의 명령이 확장된 것처럼 보인다.
8087에서는 디코더를 독립적으로 내장하고 있어 진정한 의미의 코프로세서였지만, 287 이후에는 CPU의 디코딩 결과를 전용 I/O 포트를 통해 전달하는 방식을 채택했다. 8086/8087에서는 다음 부동 소수점 명령을 실행하기 전에, 직전의 (8087의) 명령이 끝날 때까지 기다리기 위한 (8086의) wait 명령이 필요[25]했지만, 286/287부터는 필요 없어졌다.
모토로라의 MC68881이나 MC68882를 MC68020 또는 MC68030과 조합하는 경우, 전용으로 준비된 제어선을 사용하여 연결하면 소프트웨어의 변경은 필요 없으며, 프로그래머에게는 단순히 CPU의 기능이 확장된 것처럼 취급된다. MC68020의 경우, 엄밀히는 코프로세서의 존재를 나타내는 플래그가 설정된다.
6. 3. CPU 대체 (乗っ取り形) 방식
코프로세서 방식의 발전 형태이다. 코프로세서는 CPU로서의 모든 기능을 가지고 있으며, 제어를 완전히 코프로세서 측에 넘겨 기존 CPU를 정지시킨다.
487이 이에 해당하며, FPU는 이름뿐이고 실체는 오버드라이브 프로세서이다.[1]
참조
[1]
웹사이트
Intel 80287XL Numeric Processing Unit
https://www.computin[...]
2024-11-02
[2]
논문
The IBM System/360 Model 91: Floating-Point Execution Unit
1967-01
[3]
웹사이트
Intel Underestimates Error Bounds by 1.3 quintillion
https://randomascii.[...]
2014-10-09
[4]
웹사이트
FSIN Documentation Improvements in the "Intel® 64 and IA-32 Architectures Software Developer's Manual"
https://software.int[...]
2014-10-09
[5]
웹사이트
PDP-6 Handbook
http://bitsavers.org[...]
[6]
웹사이트
GE-2xx documents
http://www.bitsavers[...]
[7]
웹사이트
Intel 80287 family
http://www.cpu-world[...]
2019-01-15
[8]
서적
Elementary Functions: Algorithms and Implementation
http://perso.ens-lyo[...]
Birkhäuser
2006
[9]
논문
Implementation of Transcendental Functions on a Numerics Processor
1983-03
[10]
서적
The 8087 Primer
https://archive.org/[...]
John Wiley & Sons Australia, Limited
1984
[11]
논문
Math Coprocessors: A look at what they do, and how they do it
1990-01
[12]
논문
Implementing CORDIC algorithms – A single compact routine for computing transcendental functions
http://www.drdobbs.c[...]
1990-10-01
[13]
논문
Intel's Floating-Point Processors
1988
[14]
웹사이트
AMD Steamroller vs Bulldozer
http://cdn3.wccftech[...]
2022-03-14
[15]
웹사이트
AMD unveils Flex FP
https://www.bit-tech[...]
2010-10-28
[16]
서적
PDP-11/45 Processor Handbook
http://bitsavers.org[...]
Digital Equipment Corporation
1973
[17]
서적
PDP-11 Processor Handbook
http://bitsavers.org[...]
Digital Equipment Corporation
1979
[18]
서적
MICRO/PDP-11 Handbook
http://bitsavers.org[...]
Digital Equipment Corporation
1983
[19]
서적
VAX – Hardware Handbook Volume I – 1986
http://bitsavers.org[...]
Digital Equipment Corporation
1985
[20]
서적
VAX – Hardware Handbook Volume II – 1986
http://bitsavers.org[...]
Digital Equipment Corporation
1986
[21]
웹사이트
Western Electric 32206 co-processor
https://www.cpu-worl[...]
2021-11-06
[22]
간행물
Programming The ARM: The Floating Point Co-processor
1990-03
[23]
간행물
Acorn Releases Floating Point Accelerator
http://chrisacorns.c[...]
Acorn Computers Limited
1993-07-05
[24]
웹사이트
FPUとは - IT用語辞典
https://e-words.jp/w[...]
2024-02-05
[25]
서적
PC-9801システム解析(下)
アスキー
1983-12-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com